<?php

class Aduanas_DetallegruposusuarioController extends Zend_Controller_Action {

    public function init() {
        /* Initialize action controller here  edite para probar */
        /* Initialize action controller here */
        $parametrosNamespace = new Zend_Session_Namespace('parametros');
        $parametrosNamespace->unlock();
        $parametrosNamespace->parametrosBusqueda = null;
        $parametrosNamespace->cantidadFilas = null;
        $parametrosNamespace->Application_Model_DbTable = "Application_Model_DbTable_Detgrupousuario";
        $parametrosNamespace->lock();
    }

    public function indexAction() {
        
    }

    public function listarAction() {

        $this->_helper->viewRenderer->setNoRender(true);

        $parametrosNamespace = new Zend_Session_Namespace('parametros');
        $parametrosNamespace->unlock();
        $cantidadFilas = $this->getRequest()->getParam("rows");
        if (!isset($cantidadFilas)) {
            $cantidadFilas = 10;
        }
        $parametrosNamespace->cantidadFilas = $cantidadFilas;
        $page = $this->getRequest()->getParam("page");
        if (!isset($page)) {
            $page = 1;
        }
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('d' => 'det_grupo_usuario'), 
                       array(
                            'd.id_det_grupo_usuario',
                            'd.cod_grupo_usuario',
                            'g.desc_grupo_usuario',
                            'd.cod_aplicacion',
                            'a.desc_aplicacion',
                            'd.permiso_insert',
                            'd.permiso_update',
                            'd.permiso_delete',
                            'd.permiso_list'))
                ->join(array('g' => 'grupo_usuario'), 'd.cod_grupo_usuario = g.cod_grupo_usuario')
                ->join(array('a' => 'aplicacion'), 'd.cod_aplicacion = a.cod_aplicacion');

//        die($select);
        $result = $db->fetchAll($select);
        $this->view->headScript()->appendFile($this->view->baseUrl() . '/js/bootstrap.js');
        $this->view->headScript()->appendFile($this->view->baseUrl() . '/js/gridDetallegruposusuario.js');
        $pagina = self::obtenerPaginas($result, $cantidadFilas, $page);
        echo $this->_helper->json($pagina);
    }
    
    private function obtenerPaginas($result, $cantidadFilas, $page) {
        $this->_paginator = Zend_Paginator::factory($result);
        $this->_paginator->setItemCountPerPage($cantidadFilas);
        $this->_paginator->setCurrentPageNumber($page);
        $pagina ['rows'] = array();
        foreach ($this->_paginator as $item) {

            $arrayDatos ['cell'] = array(
                            null,
                            $item['id_det_grupo_usuario'],
                            $item['cod_grupo_usuario'],
                            $item['desc_grupo_usuario'],
                            $item['cod_aplicacion'],
                            $item['desc_aplicacion'],
                            $item['permiso_insert'],
                            $item['permiso_update'],
                            $item['permiso_delete'],
                            $item['permiso_list']
            );
            $arrayDatos ['columns'] = array(
                            'modificar',
                            'id_det_grupo_usuario',
                            'cod_grupo_usuario',
                            'desc_grupo_usuario',
                            'cod_aplicacion',
                            'desc_aplicacion',
                            'permiso_insert',
                            'permiso_update',
                            'permiso_delete',
                            'permiso_list'
            );
            array_push($pagina ['rows'], $arrayDatos);
        }

        if ($cantidadFilas == 0)
            $cantidadFilas = 10;

        $pagina ['records'] = count($result);
        $pagina ['page'] = $page;
        $pagina ['total'] = ceil($pagina ['records'] / $cantidadFilas);

        if ($pagina['records'] == 0) {
            $pagina ['mensajeSinFilas'] = true;
        }

        $parametrosNamespace = new Zend_Session_Namespace('parametros');
        $parametrosNamespace->unlock();
        $parametrosNamespace->listadoCompras = $pagina ['rows'];
        $parametrosNamespace->lock();

        return $pagina;
    }

    public function grupodataAction() {
//        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('g' => 'grupo_usuario'))
                ->where("g.activo = 'S'")
                ->order(array('g.desc_grupo_usuario')
        );
        $result = $db->fetchAll($select);

        echo json_encode($result);
    }

    public function aplicaciondataAction() {
//        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('a' => 'aplicacion'))
                ->where("a.activo = 'S'")
                ->order(array('a.desc_aplicacion')
        );
        $result = $db->fetchAll($select);

        echo json_encode($result);
    }

    public function validaaplicacionAction() {
//        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $datos = trim($this->getRequest()->getParam("parametro"));
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('a' => 'aplicacion'), array('a.cod_aplicacion', 'a.cod_modulo', 'a.desc_aplicacion'))
                ->where("a.desc_aplicacion = ?", $datos)
                ->where("a.activo = ?", 'S');
        $result = $db->fetchAll($select);
//        print_r($result);
//         die();
//        
        $option = array();
        foreach ($result as $value) {
            $cod_aplicacion = ($value ['cod_aplicacion']);
            $cod_modulo = $value ['cod_modulo'];
            $desc_aplicacion = $value ['desc_aplicacion'];
            $option = array("cod_aplicacion" => $cod_aplicacion, "cod_modulo" => $cod_modulo, "desc_aplicacion" => $desc_aplicacion);
        }
//        echo $option;
        echo json_encode($option);
    }

    public function guardarAction() {

//		$this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $dataGrilla = $this->getRequest()->getParam("dataGrilla");
        $dataLength = $this->getRequest()->getParam("dataLength");
        $id_editar = $this->getRequest()->getParam("id_editar");

        $Model_class = new Application_Model_Detgrupousuario();
        self::almacenarDatos($Model_class, $dataGrilla, $dataLength, $id_editar);
    }

    public function almacenarDatos($Model_class, $dataGrilla, $dataLength, $id_editar) {
        try {
            $db = Zend_Db_Table::getDefaultAdapter();
            $db->beginTransaction();
            if($id_editar > 0 && $id_editar == null){
                $id_editar = 0;
            }

            $servCompra = new Application_Model_DataService("Application_Model_DbTable_Detgrupousuario");

            if ($dataLength > 0) {
                $i = 0;
                foreach ($dataGrilla as $fila) {
                    $i++;
                    $Model_class->setId_det_grupo_usuario($id_editar);
                    $Model_class->setCod_grupo_usuario($fila["grupoid"]);
                    $Model_class->setCod_aplicacion($fila["aplicacioncod"]);
                    $Model_class->setPermiso_insert($fila["insert"]);
                    $Model_class->setPermiso_update($fila["update"]);
                    $Model_class->setPermiso_delete($fila["delete"]);
                    $Model_class->setPermiso_list($fila["list"]);

                    $codDetGrupo = $servCompra->saveRow($Model_class);
                }
                $db->commit();

                echo json_encode(array("result" => "EXITO"));
            } else {
                echo json_encode(array("result" => "Datos Vacios"));
            }
        } catch (Exception $e) {
            echo json_encode(array("result" => "ERROR", "mensaje" => $e->getCode(), "errotname" => $e->getMessage(),
                "otro" => $e->getFile(), "linea" => $e->getLine()));
            $db->rollBack();
        }
    }
    
     public function eliminarAction(){
//        $this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender ( true );
		$id = $this->getRequest ()->getParam ( "id" );
		try{
			$db = Zend_Db_Table::getDefaultAdapter();
			$db->beginTransaction();
			$servCon = new Application_Model_DataService("Application_Model_DbTable_Detgrupousuario");
			$servCon->deleteRowById(array("id_det_grupo_usuario" => $id));
			$db->commit();
			echo json_encode(array("result" => "EXITO"));
		}catch( Exception $e ) {
			echo json_encode(array("result" => "ERROR","mensaje"=>$e->getCode()));
			$db->rollBack();
		}
    }

}

